/*
 * Licensed to the Tai Ping Jin Ke
 *
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称：呼叫中心-通用处理层-权限控制管理
 * 版权说明：本软件属太平金融科技服务(上海)有限公司所有，在未获得太平金融科技服务(上海)有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.taiping.cc.authorize.converter;

import cn.hutool.core.date.DateUtil;
import com.taiping.cc.authorize.dataobject.AuthLoginDO;
import com.taiping.dlt.pojo.bo.AuthLoginBO;
import com.taipingframework.json.JsonExtUtils;
import com.taipingframework.utility.thread.ParallelHelper;
import org.springframework.lang.NonNull;

import java.util.List;

/**
 * 注解lombok.experimental.Accessors的使用 与 org.springframework.cglib.beans.BeanCopier.create(Class, Class, boolean) 会产生冲突，导致赋值失败。
 */
public class AuthLoginBOConverter {

    /**
     * 数据对象 AuthLoginDO 转换为 业务对象 AuthLoginBO
     */
    public static AuthLoginBO convert(@NonNull AuthLoginDO authLoginDO) {
        AuthLoginBO authLoginBO = new AuthLoginBO();

        JsonExtUtils.copyProperties(AuthLoginDO.class, AuthLoginBO.class, authLoginDO, authLoginBO);
        authLoginBO.setLastLoginTime(DateUtil.date(authLoginDO.getLastLoginTime()));

        return authLoginBO;
    }

    /**
     * 数据对象列表 List<AuthLoginDO> 转换为 业务对象列表 List<AuthLoginBO>
     */
    public static List<AuthLoginBO> convert(@NonNull List<AuthLoginDO> authLoginDOList) {
        // 此处使用自定义ForkJoinPool解决MDC数据丢失的问题
        return ParallelHelper.parallelConvert(authLoginDOList, AuthLoginBOConverter::convert);
    }

}
